//导入axios
import axios from 'axios'
import { confirmMessage, showMessage } from "../util/message.js"
import { ElMessage } from "element-plus";

axios.defaults.baseURL = "http://localhost:8088"

//添加请求拦截器
axios.interceptors.request.use(function (config) {
  // 将token添加到请求头中
  let token = sessionStorage.getItem('token');
  if (token) {
    //将token放入请求头的Authorization字段中
    config.headers.Authorization = token;
  }

  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

//添加响应拦截器
axios.interceptors.response.use(function (response) {
  if (response && response.data.code > 900) {
    //点“确定”就执行then函数
    confirmMessage(response.data.msg + "，是否重新登录？").then(() => {
      //删除浏览器的token
      window.sessionStorage.removeItem("token")
      //跳到登录页
      window.location.href = '/';
    }).catch(() => { //点“取消”按钮就执行catch函数
      ElMessage({
        type: 'info', //提示消息类型：info
        message: '取消重新登录', //提示的消息文字
      })
    })
  } else {
    return response;
  }
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
});


//封装post请求，导出我们定义的doPost函数
export const doPost = (url, param) => {
  return axios({
    method: 'post',
    url: url,
    responseType: 'json',
    data: param,
  })
}

//封装get请求，导出我们定义的doGet函数
export const doGet = (url, param) => {
  return axios({
    method: 'get',
    url: url,
    responseType: 'json',
    params: param,
  })
}

//封装put请求，导出我们定义的doGet函数
export const doPut = (url, param) => {
  //通过配置方式，请求后端
  return axios({
    method: 'put', //请求方式是post
    url: url, //post请求的地址
    responseType: 'json', //post请求后端返回的数据类型是json
    data: param //put请求体（body）提交的参数，`data`是作为请求体被发送的数据，`params`是与请求一起发送的URL参数
  })
}

export const doDelete = (url, param) => {
  //通过配置方式，请求后端
  return axios({
    method: 'delete',//请求方式是post
    url: url, //post请求的地址
    responseType: 'json', //post请求后端返回的数据类型是json
    params: param//post请求体（body）提交的参数，`data`是作为请求体被发送的数据，Get请求`params`是与请求一起发送的URL参数
  })
}

export const doDownload = (url, param) => {
  //通过配置方式，请求后端
  return axios({
    method: 'get',//请求方式是post
    url: url, //post请求的地址
    responseType: 'blob', //post请求后端返回的数据类型是json
    params: param//post请求体（body）提交的参数，`data`是作为请求体被发送的数据，Get请求`params`是与请求一起发送的URL参数
  })
}